package org.Iter2.Presentacion;

import javax.swing.*;
import javax.swing.border.EmptyBorder;

import java.io.*;
import java.sql.*;
import java.awt.*;
import java.awt.event.*;

import com.mysql.jdbc.Statement;

public class VentanaLogin extends JFrame {
	
    private JTextField txtUser, txtPass;
    private JLabel lblUser, lblPass;
    protected JButton btnEntrar;
    String usuario, elPassword;
    private final JLabel lblLogoLogin = new JLabel("");
    
	/**
	 * Create the frame.
	 */
	public  VentanaLogin() {
    	setResizable(false);
        Container contenedor = getContentPane();
        
        // crear etiqueta y cuadro de texxto del usuario
        txtUser = new JTextField(10);
        txtUser.setBounds(87, 142, 134, 28);
        lblUser = new JLabel("Usuario: ");
        lblUser.setBounds(35, 148, 61, 16);
        txtUser.setToolTipText("Escriba su nombre de usuario");       
        getContentPane().setLayout(null);
        Component verticalStrut = Box.createVerticalStrut(50);
        verticalStrut.setBounds(16, 119, 12, 50);
        contenedor.add( verticalStrut );
        contenedor.add(lblUser);
        contenedor.add(txtUser);
 
        //crear etiqueta y cuadro de texxto del pw
        txtPass = new JPasswordField(10);
        txtPass.setBounds(315, 142, 134, 28);
        lblPass = new JLabel("Constrase\u00F1a:");
        lblPass.setBounds(233, 148, 82, 16);
        txtPass.setToolTipText("Escriba su constrase\u00F1a");
        contenedor.add(lblPass);
        contenedor.add(txtPass);
 
        //Crear y agregar los botones
        btnEntrar = new JButton("Entrar");
        btnEntrar.addActionListener(new ActionListener() {
        	public void actionPerformed(ActionEvent e) {
        		try
                {                   
                    //chekar si el usuario escrbio el nombre de usuario y pw
                    if (txtUser.getText().length() > 0 && txtPass.getText().length() > 0 )
                    {
                        // Si el usuario si fue validado correctamente
                        if( validarUsuario( txtUser.getText(), txtPass.getText() ) )    //enviar datos a validar
                        {
                            // Codigo para mostrar la ventana principal
                        	String tipo=comprobarTipo( txtUser.getText(), txtPass.getText() );
                            setVisible(false);
                            VentanaPrincipal principal = new VentanaPrincipal();
                            principal.mostrar(tipo);
 
                        }
                        else
                        {
                            JOptionPane.showMessageDialog(null, "El nombre de usuario y/o constrase\u00F1a no son validos.");
                            JOptionPane.showMessageDialog(null, txtUser.getText()+" " +txtPass.getText() );
                            txtUser.setText("");    //limpiar campos
                            txtPass.setText("");       
                             
                            txtUser.requestFocusInWindow();
                        }
 
                    }
                    else
                    {
                        JOptionPane.showMessageDialog(null, "Debe escribir nombre de usuario y constrase\u00F1a.\n" +
                            "No puede dejar ningun campo vacio");
                    }
 
                } catch (Exception e1)
                {
                    e1.printStackTrace();
                }
        	}
        });
        btnEntrar.setBounds(357, 182, 92, 29);
        //establecer Boton aceptar por defecto
        getRootPane().setDefaultButton(btnEntrar);
        contenedor.add(btnEntrar);
        lblLogoLogin.setIcon(new ImageIcon(VentanaLogin.class.getResource("/org/Iter2/Recursos/logoLogin.png")));
        lblLogoLogin.setBounds(42, 16, 407, 120);
        
        getContentPane().add(lblLogoLogin);
        
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		
		setTitle("findpersons - Login");
        setSize(466,248);
        //Centrar la ventana de autentificacion en la pantalla
        Dimension tamFrame=this.getSize();//para obtener las dimensiones del frame
        Dimension tamPantalla=Toolkit.getDefaultToolkit().getScreenSize();      //para obtener el tamanio de la pantalla
        setLocation((tamPantalla.width-tamFrame.width)/2, (tamPantalla.height-tamFrame.height)/2);  //para posicionar
        setVisible(true);           // Hacer visible al frame

	}

	 boolean validarUsuario(String id, String pass)  throws IOException
	    {
	        try
	        {
	            //nombre de la BD: bdlogin
	             //nombre de la tabla: usuarios
	             //                             id      integer auto_increment not null     <--llave primaria
	             //                   campos:    usuario    char(25)
	             //                              password char(50)
	              
	            Connection unaConexion  = DriverManager.getConnection("jdbc:mysql://localhost/findpersons","root", "");
	            // Preparamos la consulta
	            Statement instruccionSQL = (Statement) unaConexion.createStatement();
	            ResultSet resultadosConsulta = instruccionSQL.executeQuery ("SELECT * FROM usuarios WHERE id='"+id+"' AND password='"+ pass+"'");
	            if( resultadosConsulta.first() )        // si es valido el primer reg. hay una fila, tons el usuario y su pw existen
	                return true;        //usuario validado correctamente
	            else
	                return false;        //usuario validado incorrectamente
	                 
	        } catch (Exception e2)
	        {
	            e2.printStackTrace();
	            return false;
	        }
	 
	    }
	    

	     
	    String comprobarTipo(String id, String pass)  throws IOException
	    {
	    	String tipo = "";
	        try
	        {
	            Connection unaConexion  = DriverManager.getConnection("jdbc:mysql://localhost/findpersons","root", "");
	            Statement instruccionSQL = (Statement) unaConexion.createStatement();
	            ResultSet resultadoTipo = instruccionSQL.executeQuery ("SELECT * FROM usuarios WHERE id='"+id+"' AND password='"+ pass+"'");
	            while(resultadoTipo.next())	
	            	tipo = resultadoTipo.getString("tipo");

	                 
	        } catch (Exception e3)
	        {
	            e3.printStackTrace();
	        }
			return tipo;
	 
	    }
	    public static void main(String[] args)
	    {
	        VentanaLogin prueba = new VentanaLogin();
	        prueba.setDefaultCloseOperation(prueba.EXIT_ON_CLOSE);
	    }
	 
}
